package com.bjsxt.service;

import com.bjsxt.domain.Purchase;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bjsxt.domain.PurchaseItem;
import com.bjsxt.domain.SimpleUser;
import com.bjsxt.dto.PurchaseDto;
import com.bjsxt.dto.PurchaseFormDto;
import com.bjsxt.vo.DataGridView;

import java.util.List;

public interface PurchaseService{
    /**
     * 分页查询
     * @param purchaseDto
     * @return
     */
    DataGridView listPurchasePage(PurchaseDto purchaseDto);

    /**
     * 根据采购单据号查询单据信息
     * @param purchaseId 采购单据号
     * @return
     */
    Purchase getPurchaseById(String purchaseId);

    /**
     * 提交审核
     * @param purchaseId 采购单据号
     * @param simpleUser 申请人
     * @return
     */
    int doAudit(String purchaseId, SimpleUser simpleUser);

    /**
     * 作废
     * @param purchaseId 采购单据号
     * @return
     */
    int doInvalid(String purchaseId);

    /**
     * 审核通过
     * @param purchaseId 采购单据号
     * @return
     */
    int auditPass(String purchaseId);

    /**
     * 审核不通过
     * @param purchaseId
     * @return
     */
    int auditNoPass(String purchaseId,String auditMsg);

    /**
     * 根据采购单据号查询采购信息详情
     * @param purchaseId 采购单据号
     * @return
     */
    List<PurchaseItem> getPurchaseItemById(String purchaseId);

    /**
     * 暂存采购单主表数据和详情数据
     * 暂存和保存并提交的区别是 暂存需要修改状态为未提交 保存并提交需要修改采购单主表状态为待审核
     * @param purchaseFormDto
     * @return
     */
    int addPurchaseAndItem(PurchaseFormDto purchaseFormDto);

    /**
     * 保存并提交采购单主表数据和详情数据
     * 暂存和保存并提交的区别是 暂存需要修改状态为未提交 保存并提交需要修改采购单主表状态为待审核
     * @param purchaseFormDto
     * @return
     */
    int addPurchaseAndItemToAudit(PurchaseFormDto purchaseFormDto);

    /**
     * 对采购信息进行入库
     * @param purchaseId
     * @param currentSimpleUser
     * @return
     */
    int doInventory(String purchaseId, SimpleUser currentSimpleUser);
}
